﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SDATA;
using SDLL;
using DevComponents.DotNetBar.SuperGrid;

namespace SABI
{
    public partial class frm0062 : Form
    {
        public frm0062()
        {
            InitializeComponent();
        }

        string sql;
        DataTable dt_Grid1 = new DataTable();

        private void btnClose_Click(object sender, EventArgs e)
        {
            (Application.OpenForms["frmHome"] as frmHOME).CloseTab(this);
        }

        private void frm0062_Load(object sender, EventArgs e)
        {

        }

        void nAdd()
        {
            txtDepartmentID.Text = "";
            txtDepartmentName.Text = "";
            txtDepartmentID.Enabled = true;
            TDBCboDivisionID.Text = "";
        }


        void nDelete()
        {
            if (GridDB1.PrimaryGrid.GetSelectedRows().Count < 1)
            {
                DLL02.Alert("Bạn phải chọn dòng cần xóa!");
                return;
            }
            if (!DLL02.Confirm("Bạn có chắc muốn xóa?", "Xác nhận")) { return; }

            sql = string.Format("DELETE tb0039 WHERE DepartmentID='{0}'",txtDepartmentID.Text);
            if (SDATA.DATA.ExecuteNonQuery(sql, FRM.ConnectString, false))
            {
                loadDATA();
            }
            else
            {
                SDLL.DLL02.Alert("Xóa dữ liệu không thành công");
            } 
        }

        void nInfo()
        {
            string tn = "tb0039";
            string ws = string.Format("WHERE DepartmentID='{0}'", txtDepartmentID.Text);
            Form frm = new frm0067(tn, ws);
            frm.ShowDialog();
        }

        void nRefresh()
        {
            loadDATA();
        }

        private void frm0062_Shown(object sender, EventArgs e)
        {
            loadDATA();
        }

        private void loadDATA()
        {
            // Đơn vị
            sql = "SELECT DivisionID, DivisionName FROM tb0038 WHERE Disabled = 0 ORDER BY DivisionID";
            TDBCboDivisionID.DataSource = FRM.dt_GET(ref FRM.dt_Division, sql);

            sql = "SELECT * FROM tb0039 ORDER BY DepartmentID";
            dt_Grid1 = FRM.GetDataTable(sql);
            GridDB1.PrimaryGrid.DataSource = dt_Grid1;
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            nAdd();
        }

        private void GridDB1_SelectionChanged(object sender, DevComponents.DotNetBar.SuperGrid.GridEventArgs e)
        {
            if (GridDB1.PrimaryGrid.GetSelectedRows().Count < 1) { return; }
            GridRow gr = (GridRow)GridDB1.PrimaryGrid.GetSelectedRows()[0];
            DataRowView drv = (DataRowView)gr.DataItem;
            DataTable dt = dt_Grid1.Clone();
            dt.ImportRow(drv.Row);
            txtDepartmentID.Text = dt.Rows[0]["DepartmentID"].ToString();
            txtDepartmentName.Text = dt.Rows[0]["DepartmentName"].ToString();
            TDBCboDivisionID.Text = dt.Rows[0]["DivisionID"].ToString();
            chkDisabled.Checked = dt.Rows[0]["Disabled"].ToString() == "1" ? true : false;
            txtDepartmentID.Enabled = false;
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            if (!CheckInput()) { return; }
            if(txtDepartmentID.Enabled)
            {
                AddNew();
            }
            else
            {
                UpdateInfo();
            }
        }

        bool CheckInput()
        {
            if (txtDepartmentID.Text.Trim() == "")
            {
                DLL02.Alert("Bạn phải nhập Mã phòng ban!");
                txtDepartmentID.Focus();
                return false;
            }
            else if (txtDepartmentName.Text.Trim() == "")
            {
                DLL02.Alert("Bạn phải nhập Tên phòng ban!");
                txtDepartmentName.Focus();
                return false;
            }
            else if (TDBCboDivisionID.Text.Trim() == "")
            {
                DLL02.Alert("Bạn phải nhập Đơn vị!");
                TDBCboDivisionID.Focus();
                return false;
            }
            return true;
        }

        void AddNew()
        {
            sql = "INSERT tb0039(DepartmentID,DepartmentName,DivisionID,Disabled,";
            sql += "CreateDate,CreateUserID,LastModifyDate,LastModifyUserID) VALUES(";
            sql += string.Format("'{0}',N'{1}','{2}','{3}',", txtDepartmentID.Text, txtDepartmentName.Text, TDBCboDivisionID.Text, chkDisabled.Checked?1:0);
            sql += string.Format("GETDATE(),'{0}',GETDATE(),'{0}')", FRM.UserName);
            if (SDATA.DATA.ExecuteNonQuery(sql, FRM.ConnectString, false))
            {
                DLL02.Info("Lưu dữ liệu không thành công");
                loadDATA();
            }
            else
            {
                DLL02.Alert("Lưu dữ liệu không thành công");
            }
        }

        void UpdateInfo()
        {
            sql = "UPDATE tb0039 SET  DepartmentName=N'{0}', DivisionID='{1}', Disabled='{2}', LastModifyDate=GETDATE(), LastModifyUserID = '{3}' WHERE DepartmentID='{4}'";
            sql = string.Format(sql, txtDepartmentName.Text, TDBCboDivisionID.Text, chkDisabled.Checked?1:0, FRM.UserName, txtDepartmentID.Text);
            if (SDATA.DATA.ExecuteNonQuery(sql, FRM.ConnectString, false))
            {
                DLL02.Info("Cập nhật dữ liệu không thành công");
                loadDATA();
            }
            else
            {
                DLL02.Alert("Cập nhật dữ liệu không thành công");
            }
        }

        private void mAdd_Click(object sender, EventArgs e)
        {
            nAdd();
        }

        private void mDelete_Click(object sender, EventArgs e)
        {
            nDelete();
        }

        private void mRefresh_Click(object sender, EventArgs e)
        {
            nRefresh();
        }

        private void mSystemInfo_Click(object sender, EventArgs e)
        {
            nInfo();
        }
    }
}
